const express = require('express')
const User = require('../models/user')
const md5 = require('blueimp-md5')
const salt = require('../config').salt

//路由容器
let router = express.Router()

//首页 
// router.get('/', async (req, res, next) => {
//     res.render('index.html', {
//         user: req.session.user,
//     })
//     next()
// })



//登录
router.get('/login', (req, res, next) => {
    res.render('login.html')
})
router.post('/login',async (req, res, next) => {
    let body = req.body
    try {
        let user = await User.findOne({
            email: body.email,
            password: md5(md5(body.password + salt))
        })
        if (!user) {
            return res.status(200).json({
                err_code: 1,
                message: '用户名称或密错误'
            })
        }
        
        //登录成功,记录用户登录状态
    
        req.session.user = user
        res.status(200).json({
            err_code: 0,
            message:'OK'
        })

    } catch (err) {
        // return res.status(500).json({
        //     err_code: 500,
        //     message: err.message
        // })
        return next(err)
    }

})

//退出 
router.get('/logout', (req, res, next)=>{
    //清除登陆状态
    req.session.user = null
    //重定向到登录页
    res.redirect('/login')
})


//注册
router.get('/register', (req, res, next) => {
    res.render('register.html')
})
router.post('/register', async (req, res, next) => {
    //1 获取表单提交的数据
    // req.body
    //2 操作数据库
    // 判断该用户是否存在
    // 如果已存在,不允许注册
    // 如果不存在,注册新建用户
    //3 发送响应
   /* 
   let body = req.body
    
    User.findOne({
        $or: [
            { email: body.email },
            { nickname: body.nickname }
        ]
    }, (err, data) => {
        if (err) {
            return res.status(500).json({
                success: false,
                message:'服务端错误'
            })
        }
        if (data) {
            //邮箱或者昵称已存在
            return res.status(200).json({
                err_code: 1,
                message: 'email or nickname aleady exists'
            })
        }

        body.password = md5(md5(body.password + salt))
        new User(body).save((err, user) => {
            if (err) {
                return res.status(500).json({
                    err_code: 500,
                    message: 'Internal error'
                })
            }
            //express 提供了一个响应方法:json 
            //接收一个对象作为参数,会自动把对象转为字符串再发给浏览器
            res.status(200).json({
                err_code: 0,
                message:'OK'
        })

        })
        
    })
    */
   let body = req.body
   try {
       //邮箱存在
       if (await User.findOne({ email: body.email})) {
           return res.status(200).json({
               err_code: 1,
               message: '邮箱已存在'
           })
       }
       //昵称存在
       if (await User.findOne({ nickname: body.nickname })) {
           return res.status(200).json({
               err_code: 2,
               message: '昵称已存在'
           })
       }

       //加密
       body.password = md5(md5(body.password + salt))

       //创建用户,执行注册
        let user = await new User(body).save()
       //注册成功,使用session 记录用户登录状态
       req.session.user = user
       res.status(200).json({
           err_code: 0,
           message:'OK'
       })

   } catch (err) {
        // return res.status(500).json({
        //     err_code: 500,
        //     message: err.message
        // })
        return next(err)
   }

})

module.exports = router
